/*
 * @lc app=leetcode.cn id=2673 lang=csharp
 *
 * [2673] 使二叉树所有路径值相等的最小代价
 */

// @lc code=start
public class Solution {

    public int MinIncrements(int n, int[] cost) {
        int ans = 0;
        for (int i = n - 2; i > 0; i -= 2) {
            ans += Math.Abs(cost[i] - cost[i + 1]);
            // 叶节点 i 和 i+1 的双亲节点下标为 i/2（整数除法）
            cost[i / 2] += Math.Max(cost[i], cost[i + 1]);
        }
        return ans;
    }
}
// @lc code=end

